This invention relates, in general, to managing system memory in a computing environment, and in particular, to resizing address spaces of the system memory.
System memory is typically configured as one or more address spaces. An address space is a particular portion of system memory that has been assigned to a particular component of the computing environment, such as a particular adapter or central processing unit. The component assigned to the address space accesses the memory of the address space by issuing read and write requests. Each request includes an address that is to be used to access system memory. In some instances, however, this address does not have a one-to-one correspondence with a physical location in system memory. Therefore, address translation is performed.
Address translation is used to translate an address that is provided in one form not directly usable in accessing system memory to another form that is directly usable in accessing a physical location in system memory. For instance, a virtual address included in a request provided by a central processing unit is translated to a real or absolute address in system memory. As a further example, a Peripheral Component Interconnect (PCI) address provided in a request from an adapter may be translated to an absolute address in system memory.
To perform address translation, one or more address translation tables are used. The tables are configured in a hierarchy, and an entry in the highest level table is located using bits of the address provided in the request. That entry then points to another translation table or to the page, itself, to be accessed.